widget: Make gtk_widget_real_realize() stricter
authorBenjamin Otte <otte@redhat.com>
Wed, 11 Apr 2018 00:38:00 +0000 (02:38 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 11 Apr 2018 01:16:34 +0000 (03:16 +0200)
But in turn, also allow it to work on widgets with their own surface.

This way, we can chain up from everywhere and won't have to export
gtk_widget_set_realized().

gtk/gtkwidget.c

index b1fbcdfb29caa5f155b4cc17b0d13a20ed428d44..9ae6acc7365bebe7630831d00201ad2f3a3c20ab 100644 (file)
@@ -8755,14 +8755,18 @@ gtk_widget_real_realize (GtkWidget *widget)
 {
   GtkWidgetPrivate *priv = widget->priv;
 
-  g_assert (!_gtk_widget_get_has_surface (widget));
-
-  gtk_widget_set_realized (widget, TRUE);
-  if (priv->parent)
+  if (_gtk_widget_get_has_surface (widget))
+    {
+      g_assert (priv->surface != NULL);
+    }
+  else
     {
+      g_assert (priv->parent);
       priv->surface = gtk_widget_get_parent_surface (widget);
       g_object_ref (priv->surface);
     }
+
+  gtk_widget_set_realized (widget, TRUE);
 }
 
 /*****************************************